// 对象接口：对一个对象结构和类型进行约束。
// 1. 必选属性
interface IPType {
  name: string;
}
let pObj: IPType = {
  name: "小王",
  // age: 22, // TS检查类型失败，IPType接口没有实现age属性。
};
function setName(obj: IPType): void {
  console.log(obj);
}
setName({ name: "李四" });

// 2. 可选属性
interface IPTypeOne {
  name: string;
  color?: string; // 可选属性
}
function setNameOne(obj: IPTypeOne): void {
  console.log(obj);
}
setNameOne({ name: "李四", color: "blue" });

// 3. 只读属性
interface IPTypeTwo {
  name: string;
  color?: string; // 可选属性
  readonly x: number; // 只读属性
}
let pObj1: IPTypeTwo = {
  name: "小王",
  x: 100,
};
// pObj1.x = 1000;
